package Example20;
class Outer{
    int m = 0;
    //下面的代码定义了一个成员方法test1
    void test1(){
        System.out.println("外部类成员方法test1()");
    }
    //下面的代码定义了成员内部类Inner
    class Inner {
        int n = 1;
        void show1() {
            //成员内部类的方法中访问外部类的成员变量m
            System.out.println("外部成员变量m = "+ m);
            test1();
        }
        void show2(){
            System.out.println("内部成员方法show2()");
        }
    }
    //内部成员方法test2()
    void test2(){
        //定义外部类方法，访问内部类变量和方法
        Inner inner = new Inner();
        System.out.println("内部成员变量n=" + inner.n);
        inner.show2();
    }
}
public class Example20 {
    public static void main(String[] args) {
        Outer outer = new Outer();    //实例化外部类对象outer
        Outer.Inner inner = outer.new Inner(); //实例化内部类对象inner
        inner.show1();   //在内部类中访问外部类的成员变量m和成员方法test1
        outer.test2();   //在内部类中访问外部类的成员变量n和成员方法test2
    }
}
